package com.kaifamiao.strings;

import java.lang.reflect.Field;
import java.util.Arrays;

/**
 * 这里用到了反射，大家只需要会用这个类中的方法就可以
 */
public class StringHelper {
	
	private static Field valueField ;
	
	static {
		
		try {
			// 从 String 类中获取私有字段 value
			valueField = String.class.getDeclaredField( "value" );
			System.out.println( valueField );
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void set( String s , int index , byte oneByte ) {
		try {
			// 让不可以访问的字段可以被访问
			valueField.setAccessible( true );
			// 从 s 指向的 String 实例中 获得 value 字段的值
			Object value = valueField.get( s ) ;
			if( value instanceof byte[] bytes ) {
				bytes[ index ] = oneByte ;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void show( String s ) {
		try {
			// 让不可以访问的字段可以被访问
			valueField.setAccessible( true );
			// 从 s 指向的 String 实例中 获得 value 字段的值
			Object value = valueField.get( s ) ;
			if( value instanceof byte[] bytes ) {
				System.out.println( Arrays.toString( bytes ) );
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
